import { OperationDynamic } from './subComps/OperationDynamic'; // 生成需要
import type { EventInfo, ProTableInfo } from './utils/types';
// 初始化配置
export const initConfig = (onEvent: (eventInfo: EventInfo) => void): ProTableInfo => {
  ///开始tableInfo
  return {
    // 表格配置
    openScroll: false, // 是否开启滚动
    showExpandable: true, // 是否开启展开扩展
    showFooter: true, // 是否显示footer
    showOptions: true, // 是否显示选项卡
    showPagination: true, // 是否显示分页
    showSearch: true, // 是否显示筛选表单
    showToolBarRender: true, // 是否显示工具栏
    showToolbar: true, // 是否显示工具栏
    // showLoading: false, // 是否显示Loading,不能写在tableConfig中，不然会自动解构赋值，表格自带loading会不生效
    tableConfig: {
      rowKey: 'id', // 主键
      tableLayout: 'auto', // 表格布局 auto | fixed	无 固定表头/列或使用了 column.ellipsis 时，默认值为 fixed
      bordered: true, // 是否显示边框
      // loading: false, // 是否显示Loading
      size: 'small', // 尺寸 default | middle | small
      showHeader: true, // 是否显示表头
      rowSelection: true, // 是否显示多选框
      scroll: { x: 1200, y: 200 }, // 横向滚动 纵向滚动高度
      ///开始columns
      columns: [], // 表格的列
      ///结束columns
      headerTitle: '标题', // 表格头部标题
      tooltip: '标题 tooltip', // 表格头部标题 tooltip
      footer: '表格Footer', // 表格Footer
      options: {
        reload: true, // 是否显示刷新按钮
        search: true, // 是否显示简洁搜索
        density: true, // 是否显示紧凑按钮
        fullScreen: true, // 是否显示全屏按钮
        setting: true, // 是否显示设置按钮
      },
      pagination: {
        position: 'bottomLeft', // 位置 'topLeft' | 'topCenter' | 'topRight' | 'bottomLeft' | 'bottomCenter' | 'bottomRight';
        size: 'small', // 显示 default small
        // current: 1, // 当前页
        pageSize: 20, // 分页大小
        showSizeChanger: true, // 是否显示pageSize切换器
      },
      search: {
        span: 8, // 栅格
        collapseRender: true, // 显示展开表单
        labelWidth: 80, // label宽度
        filterType: 'query', // 表单类型 query:默认 light:轻量
        layout: 'horizontal', // 布局 horizontal:水品 vertical:垂直
      },
    },
    // 当前操作的表格Record
    currentTableRecord: {},
    // 弹框表单配置
    showModal: false, // 表单弹框
    // 显示的表单信息
    formType: 'detail',
    // 数据源配置
    dataSource: {
      // 数据主键信息
      keyInfo: {
        key: 'id',
        // value: 5,
      },
      paginationInfo: {
        currentField: 'current', // 页码字段
        pageSizeField: 'pageSize', // 页容字段
      },
      apiList: {
        list: {
          url: '/api/selectList',
          method: 'Post',
          afterScript: 'dataList=response.data.list;total=response.data.total;',
          parameter: {},
          body: {},
          data: {},
        },
        detail: {
          url: '/api/selectDetail',
          method: 'Get',
          afterScript: 'returnData=response.data',
          parameter: {},
          body: {},
          data: {},
        },
        add: {
          url: '/api/add',
          method: 'Post',
          afterScript: 'returnData=response.data',
          parameter: {},
          body: {},
          data: {},
        },
        delete: {
          url: '/api/delete',
          method: 'Get',
          afterScript: 'returnData=response.data',
          parameter: {},
          body: {},
          data: {},
        },
        update: {
          url: '/api/update',
          method: 'Post',
          afterScript: 'returnData=response.data',
          parameter: {},
          body: {},
          data: {},
        },
        deleteBatch: {
          url: '',
          method: '',
          afterScript: '',
          parameter: {},
          body: {},
          data: {},
        },
      },
    },
  };
  ///结束tableInfo
};

export const renderColumn = (onSettingEvent: any) => {
  return (_: React.ReactNode, record: any, index: number) => {
    return OperationDynamic(['detail', 'edit', 'delete'], onSettingEvent, { reactNode: _, record, index });
  };
};
